package cn.kgc.kgde.bookstore.controller;

import cn.kgc.kgde.bookstore.dto.CartDTO;
import cn.kgc.kgde.bookstore.entity.Cart;
import cn.kgc.kgde.bookstore.entity.Cartitem;
import cn.kgc.kgde.bookstore.entity.ResultInfo;
import cn.kgc.kgde.bookstore.entity.User;
import cn.kgc.kgde.bookstore.mapper.CartMapper;
import cn.kgc.kgde.bookstore.mapper.CartitemMapper;
import cn.kgc.kgde.bookstore.mapper.CategoryMapper;
import cn.kgc.kgde.bookstore.service.CartService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author myt
 * @since 2022-05-23
 */
@RestController
@RequestMapping("/cart")
public class CartController {

    @Autowired
    private CartService cartService;
    @Resource
    private CartMapper cartMapper;
    @Resource
    private CartitemMapper cartitemMapper;

    //购物车详情展示--cart-catrItem-book三表联查
    /*
    先查到购物车
    * user -》 从session中获取到用户
    *根据 用户信息确认到购物车
    * 根据购物车查购物车详情
    * 根据详情展示购物车 --- 视图层 要做的
    * */
    @GetMapping("/cartList")
    public ResultInfo cartList(String userCode){
        IPage<CartDTO> iPage=this.cartService.listCart(userCode);

        return new ResultInfo(200,"展示该用户购物车商品",iPage);
    }
//    @GetMapping("/cartList")
//    public ResultInfo cartList(User user){
//
//        //根据 用户信息确认到购物车
//        QueryWrapper<Cart> wrapper = new QueryWrapper<>(  );
//        if (user!=null){
//            wrapper.eq( "userCode",user.getUserCode() );
//        }
//        //按道理只能获取到一个购物车
//        List<Cart> cart = cartMapper.selectList( wrapper );
////        根据购物车查购物车详情
//
//        return new ResultInfo(200,"展示该用户购物车",cart);
//    }

    /**
     * 添加购物车
     */
    @PostMapping("addCart")
    public ResultInfo addCart(String userCode,Cartitem cartitem){
        System.out.println("userCode = " + userCode);
        this.cartService.addCart(userCode,cartitem);
        return  new ResultInfo(200,"添加成功");
    }

    /**
     * 查询购物车id
     */
    @PostMapping("showCart")
    public ResultInfo showCart(String userCode){
        System.out.println("userCode = " + userCode);
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("userCode",userCode);
        Cart cart=this.cartMapper.selectOne(wrapper);
        return new ResultInfo(200,"查询成功",cart);
    }

}
